(function ($) {
    // 首先备份下jquery的ajax方法
    var _ajax = $.ajax;

    // 重写jquery的ajax方法
    $.ajax = function (options) {
        // 备份opt中error和success方法
        var callback = {
            "beforeSend": function (XHR) {
            },
            "complete": function (XHR, TS) {
            },
            "error": function (XMLHttpRequest, textStatus, errorThrown) {
            },
            "success": function (data, textStatus) {
            }
        }

        // 判断参数中是否有beforeSend回调函数
        if (options.beforeSend) {
            callback.beforeSend = options.beforeSend;
        }

        // 判断参数中是否有complete回调函数
        if (options.complete) {
            callback.complete = options.complete;
        }

        // 判断参数中是否有error回调函数
        if (options.error) {
            callback.error = options.error;
        }

        // 判断参数中是否有success回调函数
        if (options.success) {
            callback.success = options.success;
        }

        // 扩展增强处理
        var _opt = $.extend(options, {
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                // 错误方法增强处理
                layer.msg('网络错误，请重试');
                callback.error(XMLHttpRequest, textStatus, errorThrown);
            },
            success: function (data, textStatus) {
                if ('1' == data.status) {
                    // 成功回调方法增强处理
                    callback.success(data.data);
                } else if ('0' == data.status) {
                    layer.msg(data.msg);
                } else {
                    layer.msg('网络错误，请重试');
                    // 成功回调方法增强处理
                    //callback.success(data);
                }
            },
            beforeSend: function (XHR) {
                // 提交前回调方法
                var index = layer.load(1, {
                    shade: [0.1, '#fff'] //0.1透明度的白色背景
                });
                callback.beforeSend(XHR);
            },
            complete: function (XHR, TS) {
                // 请求完成后回调函数 (请求成功或失败之后均调用)。
                layer.closeAll('loading');
                callback.complete(XHR, TS);
            }
        });

        // 返回重写的ajax
        return _ajax(_opt);
    };
})(jQuery);


//全站ajax加载提示
(function ($) {
    $(document).ajaxStart(function () {
        var index = layer.load(1, {
            shade: [0.1, '#fff'] //0.1透明度的白色背景
        });
    });
    $(document).ajaxStop(function () {
        layer.closeAll('loading');
    });
    //登录过期，shiro返回登录页面
    $.ajaxSetup({
        complete: function (xhr, status,dataType) {
            if('text/html;charset=UTF-8'==xhr.getResponseHeader('Content-Type')){
                layer.msg('登录过期，请重新登录');
                top.location.href = '/login';
            }
        }
    });
})(jQuery);





